Pedro's dev blog

Hierarchical Clustering: Grouping Data with Hierarchies

Published on
Published on
/4 mins read/---

Hierarchical Clustering

O Clustering Hierárquico é um método de agrupamento de dados amplamente utilizado em Machine Learning e análise de dados. Ele visa construir uma hierarquia de clusters, organizando os dados em grupos de acordo com um critério de similaridade. Diferente de outros métodos de clustering, como o K-Means, o clustering hierárquico não requer o número de clusters como entrada e pode fornecer uma visão mais abrangente sobre a estrutura dos dados.

Types of Hierarchical Clustering

Existem dois tipos principais de clustering hierárquico:

  1. Aglomerativo (Ascendente):

    • Este é o método mais comum. O clustering aglomerativo começa com cada ponto de dado como um cluster individual e, a cada etapa, os clusters mais próximos são fundidos até que todos os pontos estejam em um único cluster.
    • Etapas:
      1. Cada ponto de dado começa como um cluster único.
      2. Em cada iteração, os dois clusters mais próximos são fundidos.
      3. O processo continua até que haja apenas um cluster contendo todos os dados.
  2. Divisivo (Descendente):

    • Neste método, o clustering começa com todos os pontos em um único cluster e, a cada etapa, o cluster é dividido em dois, até que cada ponto de dado forme seu próprio cluster.
    • Etapas:
      1. Começa com todos os pontos de dados em um único cluster.
      2. Em cada iteração, um cluster é dividido nos clusters mais apropriados.
      3. O processo continua até que todos os pontos estejam em clusters individuais.

Similarity Metrics

Para determinar quais clusters devem ser combinados (no caso do clustering aglomerativo) ou divididos (no caso do divisivo), é necessário medir a similaridade entre os clusters. As métricas mais comuns incluem:

  • Distância Euclidiana: Mede a distância reta entre dois pontos.
  • Distância de Manhattan: Mede a distância percorrida ao longo dos eixos.
  • Correlação de Pearson: Mede a similaridade entre os padrões de variação entre dois conjuntos de dados.

Linkage Methods

No clustering hierárquico aglomerativo, os métodos de agrupamento mais utilizados para medir a similaridade entre dois clusters incluem:

  1. Linkagem Simples: A menor distância entre qualquer ponto de um cluster e qualquer ponto de outro cluster é usada para definir a similaridade.
  2. Linkagem Completa: A maior distância entre qualquer ponto de um cluster e qualquer ponto de outro cluster é utilizada.
  3. Linkagem Média: A média de todas as distâncias possíveis entre os pontos dos dois clusters é usada.
  4. Linkagem do Centroide: Usa o centro de massa de cada cluster e calcula a distância entre os centróides.

Dendrogram

Um dos aspectos mais interessantes do clustering hierárquico é a capacidade de visualizar a hierarquia de agrupamento usando um dendrograma. Um dendrograma é uma árvore que representa como os clusters foram combinados (ou divididos) a cada etapa.

  • Cada nível do dendrograma representa uma etapa no processo de clustering.
  • A altura das linhas de junção no dendrograma representa a distância entre os clusters que foram combinados.

Advantages and Disadvantages

Advantages

  • Interpretação intuitiva: O dendrograma fornece uma visualização clara da estrutura dos dados.
  • Não precisa especificar o número de clusters: O número de clusters pode ser decidido depois de analisar o dendrograma.
  • Funciona bem com pequenos conjuntos de dados: É um método eficaz para conjuntos de dados menores.

Disadvantages

  • Custo computacional elevado: O clustering hierárquico pode ser muito lento para grandes conjuntos de dados.
  • Sensível a outliers: A presença de outliers pode distorcer significativamente o resultado final.

Applications

  • Genômica: Para identificar relações entre genes e proteínas.
  • Análise de mercado: Para segmentar consumidores com base em seus comportamentos e características.
  • Sociologia: Para identificar comunidades ou grupos de indivíduos com base em características comuns.

Python Example

Aqui está um exemplo de como realizar um clustering hierárquico usando a biblioteca scipy em Python:

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_blobs
 
# Gerando dados de exemplo
X, _ = make_blobs(n_samples=50, centers=3, random_state=42)
 
# Realizando o clustering hierárquico
Z = linkage(X, method='ward')
 
# Plotando o dendrograma
plt.figure(figsize=(10, 6))
dendrogram(Z)
plt.title("Dendrograma - Clustering Hierárquico")
plt.xlabel("Amostras")
plt.ylabel("Distância")
plt.show()
ConnectionsFull graph →